Package com.cloudvane.ossc.system

Source Code of com.cloudvane.ossc.system.LocalClient

package com.cloudvane.ossc.system;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;

import com.cloudvane.ossc.AccessControlEnum;
import com.cloudvane.ossc.ICloudStorageProxy;
import com.cloudvane.ossc.infrastructure.CloudDirectory;
import com.cloudvane.ossc.infrastructure.CloudObject;

public class LocalClient implements ICloudStorageProxy {

  private HashMap<String, String> settings;
  private String baseDirectory;
 
  public LocalClient() {
    settings = new HashMap<String, String>();
  }
 
  @Override
  public String getStorageClient() {
    return "Local File System";
  }

  @Override
  public List<CloudDirectory> listDirectories() {
    List<CloudDirectory> retval = new LinkedList<CloudDirectory>();
    File directory = new File(getDirectory());
   
    String[] dirs = directory.list(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
          return new File(dir, name).isDirectory();
        }
      });
   
    for(String dir : dirs) {
      CloudDirectory cd = new CloudDirectory();
      cd.setAccessControl(AccessControlEnum.Public);
      cd.setDirectoryName(dir);
      retval.add(cd);
    }
   
    return retval;
  }

  @Override
  public List<CloudObject> listObjectsInDirectory(CloudDirectory directory) {
    List<CloudObject> retval = new LinkedList<CloudObject>();
    File maindirectory = new File(getDirectory() + File.separator + directory.getDirectoryName());
   
    for(File f : maindirectory.listFiles()) {
      CloudObject co = new CloudObject();
      co.setAccessControl(AccessControlEnum.Public);
      co.setFileName(f.getName());
      co.setDirectoryName(maindirectory.getAbsolutePath() + File.separator);
      retval.add(co);
    }
   
    return retval;
  }

  @Override
  public void createDirectory(CloudDirectory directory) {
    File dir = new File(getDirectory(directory));
   
    dir.mkdir();
  }

  @Override
  public void createObject(CloudDirectory targetDirectory, CloudObject object) {
    try {
      OutputStream outFile = new FileOutputStream(getFilename(targetDirectory, object));
      byte[] buffer = new byte[4096]
      int bytesRead; 
      while ((bytesRead = object.getCloudObject().read(buffer)) != -1) { 
        outFile.write(buffer, 0, bytesRead)
     
      object.getCloudObject().close()
      outFile.close();
    } catch (FileNotFoundException e) {
     
      e.printStackTrace();
    } catch (IOException ioex) {
      ioex.printStackTrace();
    }
  }

  @Override
  public void addConfigSetting(String key, String value) {
    settings.put(key, value);
  }

  @Override
  public boolean isInitialized() {
    return true;
  }
 
  private String getDirectory() {
    String retval = LocalClient.class.getProtectionDomain().getCodeSource().getLocation().getPath();
   
    retval += File.separator;
   
    if(settings.containsKey("Path"))
      retval += settings.get("Path");
   
    retval = retval.replace("%20", " ");
   
    return retval + File.separator;
  }
 
  private String getDirectory(CloudDirectory combined) {
    String retval = getDirectory();
    retval += File.separator + combined.getDirectoryName() + File.separator;
    return retval;
  }
 
  private String getFilename(CloudDirectory dir, CloudObject file) {
    String retval = getDirectory(dir);
    retval += File.separator + file.getFileName();
    return retval;
  }

  @Override
  public InputStream getObject(CloudObject file) {
    try {
      return new FileInputStream(file.getDirectoryName() + file.getFileName());
    } catch (FileNotFoundException e) {
      return null;
    }
  }

  @Override
  public InputStream getObject(String file) {
    try {
      return new FileInputStream(file);
    } catch (FileNotFoundException e) {
      return null;
    }
  }

  @Override
  public void deleteObject(CloudObject file) {
    File todel = new File(file.getDirectoryName() + file.getFileName());
   
    todel.delete();
   
  }

  @Override
  public void deleteDirectory(CloudDirectory dir) {
    File todel = new File(getDirectory() + File.separator + dir.getDirectoryName());
   
    todel.delete();
  }

  @Override
  public String getFullPath(CloudDirectory dir) {
    return this.getDirectory(dir);
  }

  @Override
  public String getFullPath(CloudDirectory dir, CloudObject obj) {
    return this.getFilename(dir, obj);
  }

}
TOP

Related Classes of com.cloudvane.ossc.system.LocalClient

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.